系统音乐播放器(SystemMusicPlayer) PRO
SystemMusicPlayer 模块用于控制系统级音乐播放器,底层基于 iOS 的 MPMusicPlayerController.systemMusicPlayer 实现。该播放器与系统“音乐”App共用播放队列和播放状态,因此对其操作会影响系统级播放行为。
该模块适用于:
- 控制系统音乐播放
- 设置播放队列
- 控制播放进度、速率、重复与随机模式
- 监听播放状态变化
- 获取当前播放项信息
使用前请注意:
- 用户必须授权访问媒体资料库。
- 若播放 Apple Music 内容,可能需要有效的订阅。
- 操作系统播放器会影响当前系统播放状态。
数据模型
PlaybackState
表示当前播放状态。
状态说明:
stopped:停止playing:正在播放paused:暂停interrupted:被系统中断(如来电)seekingForward:快进seekingBackward:快退
RepeatMode
播放循环模式。
说明:
none:不循环one:单曲循环all:列表循环default:系统默认设置
ShuffleMode
随机播放模式。
说明:
off:关闭随机songs:随机歌曲albums:随机专辑default:系统默认
NowPlayingItem
表示当前正在播放的歌曲信息。
字段说明:
persistentID:本地媒体唯一标识title:歌曲名称playbackDuration:总时长(秒)playbackStoreID:Apple Music Store ID(如存在)- 其他字段与
MediaLibrary.Item类似
设置播放队列
setQueueByStoreIDs
根据 Apple Music Store ID 设置播放队列。
参数说明:
storeIDs:Apple Music Store ID 列表startItemID:指定起始播放项startTime:起始播放时间(秒)
示例:
setQueueByPersistentIDs
根据本地媒体库的 persistentID 设置播放队列。
示例:
说明:
- 推荐与
MediaLibrary.getSongs()结合使用。
播放控制
prepare
预加载当前播放队列。
通常在播放前调用。
play
开始播放。
pause
暂停播放。
stop
停止播放。
skipToNextItem
跳至下一首。
skipToPreviousItem
跳至上一首。
seek
跳转至指定时间。
参数:
to:秒
示例:
setCurrentPlaybackTime
设置当前播放时间。
setCurrentPlaybackRate
设置播放速率。
示例:
setRepeatMode
设置循环模式。
setShuffleMode
设置随机模式。
获取播放状态
indexOfNowPlayingItem
获取当前播放项在队列中的索引。
getNowPlayingItem
获取当前播放项信息。
示例:
getPlaybackState
获取当前播放状态。
getCurrentPlaybackTime
获取当前播放时间(秒)。
getCurrentPlaybackRate
获取当前播放速率。
getRepeatMode
获取当前循环模式。
getShuffleMode
获取当前随机模式。
事件监听
EventType
addEventListener
添加事件监听。
示例:
removeEventListener
移除事件监听。
使用建议
- 设置队列后建议调用
prepare()再play()。 - 监听
nowPlayingItemDidChange以更新 UI。 - 使用
persistentID作为稳定标识,不依赖数组索引。 - 系统音乐播放器是全局播放器,操作会影响系统播放状态。
- 不建议频繁调用
setQueue...,会重置当前队列。
